package com.kingdee.pda.adapter;

import android.content.Context;
import android.view.LayoutInflater;

import java.util.ArrayList;
import java.util.List;

/**
 * adapter基类
 */
public abstract class AbsBaseAdapter<T> extends android.widget.BaseAdapter {

    protected Context context;
    protected LayoutInflater inflater;
    protected List<T> itemList = new ArrayList<>();

    public AbsBaseAdapter(Context context) {
        this.context = context;
        inflater = LayoutInflater.from(context);
    }

    /**
     * 判断数据是否为空
     *
     * @return 为空返回true，不为空返回false
     */
    public boolean isEmpty() {
        return itemList == null || itemList.isEmpty();
    }

    /**
     * 在原有的数据上添加新数据
     *
     * @param itemList
     */
    public void addData(List<T> itemList) {
        if (isEmpty()) {
            this.itemList = itemList;
        } else {
            this.itemList.addAll(itemList);
        }
        notifyDataSetChanged();
    }

    /**
     * 刷新数据
     */
    public void refreshData() {
        notifyDataSetChanged();
    }

    /**
     * 刷新数据
     */
    public void delDataAndRefreshData(T item) {
        if (itemList != null && item != null) {
            itemList.remove(item);
            notifyDataSetChanged();
        }
    }

    public void addData(T item) {
        if (isEmpty()) {
            this.itemList = new ArrayList<>();
        }
        itemList.add(item);
        notifyDataSetChanged();
    }

    /**
     * 设置为新的数据，旧数据会被清空
     *
     * @param itemList
     */
    public void setData(List<T> itemList) {
        this.itemList = itemList;
        notifyDataSetChanged();
    }

    public List<T> getData() {
        return itemList;
    }

    /**
     * 清空数据
     */
    public void clearItems() {
        itemList.clear();
        notifyDataSetChanged();
    }

    @Override
    public int getCount() {
        return itemList == null ? 0 : itemList.size();
    }

    @Override
    public T getItem(int position) {
        return itemList == null ? null : itemList.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    protected Context getContext() {
        return context;
    }

}